package com.sunni.controller;


import com.sunni.entity.User;
import com.sunni.service.RoleService;
import com.sunni.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;

@RequestMapping("/user")
@Component("userController")
public class UserController {

    @Autowired
    @Qualifier("userService")
    private UserService userService;

    @RequestMapping("/selectAll")
    public ModelAndView selectAll(ModelAndView modelAndView){
        // 添加数据
        modelAndView.addObject("userList",userService.selectAll());

        // 添加模型
        modelAndView.setViewName("user-list");

        return modelAndView;
    }

    /**
     * day06-15 : 添加用户1：添加用户页 查询(从数据库)用户角色选择框
     * @param modelAndView
     * @return
     */
    @Autowired
    @Qualifier("roleService")
    private RoleService roleService;

    @RequestMapping("/addUI")
    public ModelAndView saveUI(ModelAndView modelAndView){
        // 存 数据 （所以角色--角色选择框要展示）
        modelAndView.addObject("roleList",roleService.selectAll());
        // 存 页面(跳转到 用户新建页面-然后展示所有角色对话框)
        modelAndView.setViewName("user-add");

        return modelAndView;
    }

    /**
     * day06-16、17 : 用户添加2、3  先添加user从表数据，再添加user_role主表user_role关联的数据
     * @param user 用户信息
     * @param roleIds 角色选择框
     */
    @RequestMapping("/add")
    public String add(User user, Long[] roleIds){
        System.out.println("user = " + user);
        System.out.println("roleIds = " + roleIds);
        userService.add(user,roleIds);
        return "redirect:/user/selectAll";
    }

    /**
     * 删除用户 : 1.删除主表sys_user_role关系 2.删除从表sys_user信息
     * @param id 要删除的userId
     * @return 重新查询操作封
     */
    @RequestMapping("/delete/{userId}")
    public String deleteByUserId(@PathVariable("userId") Long id){
        userService.deleteByUserId(id);
        return "redirect:/user/selectAll";
    }


    /**
     * day07-08 验证 账号密码是否正确，查完把查到的user回传service层(service验证 user为null没查到，user不为null查到了)
     * @param user 封装了login.jsp的username和password
     * @param request 交由service层 获取session作用域存储user
     * @return 要跳转到的页面
     */
    @RequestMapping("loginCheck")
    public String userLoginCheck(User user, HttpServletRequest request){
        String viewLocation = userService.loginCheck(user,request); // 要跳转到的页面
        return viewLocation;
    }
}
